home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / ioport.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  5KB  |  130 lines

  1. /*
  2.  * ioport.h    Definitions of routines for detecting, reserving and
  3.  *        allocating system resources.
  4.  *
  5.  * Authors:    Linus Torvalds
  6.  */
  7.  
  8. #ifndef _LINUX_IOPORT_H
  9. #define _LINUX_IOPORT_H
  10.  
  11. #include <linux/compiler.h>
  12. /*
  13.  * Resources are tree-like, allowing
  14.  * nesting etc..
  15.  */
  16. struct resource {
  17.     const char *name;
  18.     unsigned long start, end;
  19.     unsigned long flags;
  20.     struct resource *parent, *sibling, *child;
  21. };
  22.  
  23. struct resource_list {
  24.     struct resource_list *next;
  25.     struct resource *res;
  26.     struct pci_dev *dev;
  27. };
  28.  
  29. /*
  30.  * IO resources have these defined flags.
  31.  */
  32. #define IORESOURCE_BITS        0x000000ff    /* Bus-specific bits */
  33.  
  34. #define IORESOURCE_IO        0x00000100    /* Resource type */
  35. #define IORESOURCE_MEM        0x00000200
  36. #define IORESOURCE_IRQ        0x00000400
  37. #define IORESOURCE_DMA        0x00000800
  38.  
  39. #define IORESOURCE_PREFETCH    0x00001000    /* No side effects */
  40. #define IORESOURCE_READONLY    0x00002000
  41. #define IORESOURCE_CACHEABLE    0x00004000
  42. #define IORESOURCE_RANGELENGTH    0x00008000
  43. #define IORESOURCE_SHADOWABLE    0x00010000
  44. #define IORESOURCE_BUS_HAS_VGA    0x00080000
  45.  
  46. #define IORESOURCE_DISABLED    0x10000000
  47. #define IORESOURCE_UNSET    0x20000000
  48. #define IORESOURCE_AUTO        0x40000000
  49. #define IORESOURCE_BUSY        0x80000000    /* Driver has marked this resource busy */
  50.  
  51. /* ISA PnP IRQ specific bits (IORESOURCE_BITS) */
  52. #define IORESOURCE_IRQ_HIGHEDGE        (1<<0)
  53. #define IORESOURCE_IRQ_LOWEDGE        (1<<1)
  54. #define IORESOURCE_IRQ_HIGHLEVEL    (1<<2)
  55. #define IORESOURCE_IRQ_LOWLEVEL        (1<<3)
  56.  
  57. /* ISA PnP DMA specific bits (IORESOURCE_BITS) */
  58. #define IORESOURCE_DMA_TYPE_MASK    (3<<0)
  59. #define IORESOURCE_DMA_8BIT        (0<<0)
  60. #define IORESOURCE_DMA_8AND16BIT    (1<<0)
  61. #define IORESOURCE_DMA_16BIT        (2<<0)
  62.  
  63. #define IORESOURCE_DMA_MASTER        (1<<2)
  64. #define IORESOURCE_DMA_BYTE        (1<<3)
  65. #define IORESOURCE_DMA_WORD        (1<<4)
  66.  
  67. #define IORESOURCE_DMA_SPEED_MASK    (3<<6)
  68. #define IORESOURCE_DMA_COMPATIBLE    (0<<6)
  69. #define IORESOURCE_DMA_TYPEA        (1<<6)
  70. #define IORESOURCE_DMA_TYPEB        (2<<6)
  71. #define IORESOURCE_DMA_TYPEF        (3<<6)
  72.  
  73. /* ISA PnP memory I/O specific bits (IORESOURCE_BITS) */
  74. #define IORESOURCE_MEM_WRITEABLE    (1<<0)    /* dup: IORESOURCE_READONLY */
  75. #define IORESOURCE_MEM_CACHEABLE    (1<<1)    /* dup: IORESOURCE_CACHEABLE */
  76. #define IORESOURCE_MEM_RANGELENGTH    (1<<2)    /* dup: IORESOURCE_RANGELENGTH */
  77. #define IORESOURCE_MEM_TYPE_MASK    (3<<3)
  78. #define IORESOURCE_MEM_8BIT        (0<<3)
  79. #define IORESOURCE_MEM_16BIT        (1<<3)
  80. #define IORESOURCE_MEM_8AND16BIT    (2<<3)
  81. #define IORESOURCE_MEM_32BIT        (3<<3)
  82. #define IORESOURCE_MEM_SHADOWABLE    (1<<5)    /* dup: IORESOURCE_SHADOWABLE */
  83. #define IORESOURCE_MEM_EXPANSIONROM    (1<<6)
  84.  
  85. /* PCI ROM control bits (IORESOURCE_BITS) */
  86. #define IORESOURCE_ROM_ENABLE        (1<<0)    /* ROM is enabled, same as PCI_ROM_ADDRESS_ENABLE */
  87. #define IORESOURCE_ROM_SHADOW        (1<<1)    /* ROM is copy at C000:0 */
  88. #define IORESOURCE_ROM_COPY        (1<<2)    /* ROM is alloc'd copy, resource field overlaid */
  89.  
  90. /* PC/ISA/whatever - the normal PC address spaces: IO and memory */
  91. extern struct resource ioport_resource;
  92. extern struct resource iomem_resource;
  93.  
  94. extern int get_resource_list(struct resource *, char *buf, int size);
  95.  
  96. extern int request_resource(struct resource *root, struct resource *new);
  97. extern struct resource * ____request_resource(struct resource *root, struct resource *new);
  98. extern int release_resource(struct resource *new);
  99. extern int insert_resource(struct resource *parent, struct resource *new);
  100. extern int allocate_resource(struct resource *root, struct resource *new,
  101.                  unsigned long size,
  102.                  unsigned long min, unsigned long max,
  103.                  unsigned long align,
  104.                  void (*alignf)(void *, struct resource *,
  105.                         unsigned long, unsigned long),
  106.                  void *alignf_data);
  107. int adjust_resource(struct resource *res, unsigned long start,
  108.             unsigned long size);
  109.  
  110. /* Convenience shorthand with allocation */
  111. #define request_region(start,n,name)    __request_region(&ioport_resource, (start), (n), (name))
  112. #define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name))
  113. #define rename_region(region, newname) do { (region)->name = (newname); } while (0)
  114.  
  115. extern struct resource * __request_region(struct resource *, unsigned long start, unsigned long n, const char *name);
  116.  
  117. /* Compatibility cruft */
  118. #define release_region(start,n)    __release_region(&ioport_resource, (start), (n))
  119. #define check_mem_region(start,n)    __check_region(&iomem_resource, (start), (n))
  120. #define release_mem_region(start,n)    __release_region(&iomem_resource, (start), (n))
  121.  
  122. extern int __check_region(struct resource *, unsigned long, unsigned long);
  123. extern void __release_region(struct resource *, unsigned long, unsigned long);
  124.  
  125. static inline int __deprecated check_region(unsigned long s, unsigned long n)
  126. {
  127.     return __check_region(&ioport_resource, s, n);
  128. }
  129. #endif    /* _LINUX_IOPORT_H */
  130.